# 工具使用 Tool Use

**核心思想：工具即函数，模型自主决策**
关键在于，模型拥有自主决策权。它不再是被动地根据内部知识库生成答案，而是能主动判断：在当前情境下，是否需要、以及应该调用哪个工具来完成任务。
就像人类借助锤子、扳手等工具能完成徒手无法做到的事情一样，语言模型通过调用“函数工具”，也能突破自身训练数据和能力的限制，变得无比强大。 

## 一、简单工具执行流程 (Simple Tool Execution)

例子：工具使用的运作流程
以“现在几点？”为例，清晰展示了工具使用的完整闭环：
1. 输入提示 (Input Prompt): 用户提问 “What time is it?”。
2. 模型决策 (Model Decision): LLM 意识到自己无法提供实时时间，于是决定调用名为 get_current_time() 的工具。
3. 工具执行 (Tool Execution): 系统执行该函数，返回精确的时间值，例如 15:20:45。
4. 结果反馈 (Result Feedback): 这个时间值被作为新的上下文（对话历史）回传给 LLM。
5. 最终输出 (Final Output): LLM 结合这个新信息，生成自然语言回复：“It's 3:20pm.”

整个过程的关键点：
- 工具是函数：get_current_time() 是一段 Python 代码，它负责与系统时钟交互并返回字符串。
- 模型自主选择：模型自行决定何时、何地调用哪个工具。
- 动态上下文：工具返回的结果会融入对话历史，供模型后续推理使用。

![alt text](../images/3.1.1.png)

### 何时调用，何时不调用？
工具使用的一个重要特性是条件性调用。
模型并非对所有问题都盲目调用工具，而是能智能判断。
- 调用工具的例子：当被问及“现在几点？”，模型知道需要实时数据，因此调用 get_current_time()。
- 不调用工具的例子：当被问及“绿茶含多少咖啡因？”，模型可以基于其内部知识库直接回答：“Green tea typically contains 25-50 mg of caffeine per cup.”，无需调用任何工具。
这体现了模型的“智能”——它能区分哪些信息是静态的（可内化），哪些是动态的（需外求）。


## 二、工具使用的实际应用示例

| Prompt (提示) | Tool (工具) | Output (输出) |
| :--- | :--- | :--- |
| “你能找到加州山景城附近的一些意大利餐厅吗？” | `web_search(query="restaurants near Mountain View, CA")` | “Spaghetti City 是一家位于山景城的意大利餐厅...” |
| “给我看看买了白色太阳镜的顾客。” | `query_database(table="sales", product="sunglasses", color="white")` | “28位顾客购买了白色太阳镜。他们是...” |
| “如果我存入500美元，年利率5%，10年后我会得到多少钱？” | `interest_calc(principal=500, interest_rate=5, years=10)` | “$814.45” |

![alt text](../images/3.1.2.png)

## 三、多工具协作
对于更复杂的请求，模型可以串联调用多个工具，形成工作流。
案例：日历助理
- 用户请求: “请在周四我的日历中找一个空闲时段，并与Alice预约。”
- 提供的工具集:
  - check_calendar(): 查询日历，返回空闲时段。
  - make_appointment(): 创建预约。
  - delete_appointment(): 取消预约。
- 模型执行流程:
  1. 首先调用 check_calendar()，获得结果：“Thursday, 3pm; Thursday, 4pm; Thursday, 6pm”。
  2. 基于返回的信息，模型决定选择“3pm”这个时段。
  3. 接着调用 make_appointment(time="3pm", with="Alice")。
  4. 工具返回确认信息：“Meeting created successfully!”。
  5. 最终，模型整合信息，回复用户：“Your appointment is set up with Alice at 3 PM Thursday.”

![alt text](../images/3.1.3.png)

**总结**
工具使用是构建下一代 AI 应用的关键技术。它让语言模型从“只会聊天”的伙伴，进化为能够“动手做事”的智能助手。
核心价值：
- 超越知识边界：通过调用工具，模型可以获取实时数据、访问数据库、执行计算。
- 实现复杂逻辑：支持多步推理和工具链协作，处理现实世界的复杂需求。
- 提升应用价值：无论是餐厅推荐、零售分析还是个人日程管理，都能因工具而变得更实用、更强大。